import qs from "qs";


const app = {
    /////////////属性//////////////
    state: {
        // 页面 title 元素内容
        title: document.title,
        // 加载状态
        loading: false,
        // 用户信息
        userInfo: JSON.parse(sessionStorage.getItem("userInfo")) || "",
        // 错误数据
        resError: ""
    },
    /////////////获得属性//////////////
    getters: {
        //获取用户信息
        getUserInfo: state => state.userInfo,
        //获取用户信息
        getResError: state => state.resError
    },
    /////////////改变属性//////////////
    mutations: {
        // 更新页面 title 元素内容
        setTitle: (state, data) => {
            document.title = `${state.title} | ${data}`;
        },
        // 更新加载状态
        setLoading: (state, data) => {
            state.loading = data;
        },
        // 更新用户信息
        setUserInfo: (state, data) => {
            state.userInfo = data;
            //防止刷新vuex状态丢失，所以先放入sessionStorage
            sessionStorage.setItem("userInfo", JSON.stringify(data));
        },
        // 更新错误数据
        setResError: (state, data) => {
            state.resError = data
                ? {
                    status: data.status,
                    statusText: data.statusText,
                    statusCode: `${data.status} ${data.statusText}`,
                    error: {
                        "Response Data": data.data,
                        "Request URL": data.config.url,
                        "Request Method": data.config.method.toUpperCase(),
                        "Form Data": qs.parse(data.config.data)
                    }
                }
                : "";
        }
    }
};

export default app;
